[小ネタ]EC2のロググループの保持期間はCloudWatch エージェントの設定ファイルで設定しよう
こんにちは!AWS事業本部のおつまみです。
みなさん、EC2インスタンスのログをCloudWatchLogsに転送していますか?
2022/2/25のアップデートでロググループの保持期間をCloudWatchエージェントの設定ファイルで設定できるようになっています。
こちらが検証したブログです。
さて、設定ファイルで保持期間をしている場合にCloduWatchコンソールでログの保持期間を変更した場合はどうなるでしょうか?
いきなり結論
- 2022/2/25以降にCloudWatchAgentをインストールかつウィザード形式で設定した場合は、CloudWatchLogsの保持期間が設定ファイルにデフォルトで指定されている。
- CloduWatchコンソールでログの保持期間を変更しても、エージェントが再起動されると設定ファイルの値に戻ってしまう。(当たり前かもしれませんが、設定ファイルの値が優先されます。)
- CloudWatchLogsの保持期間は設定ファイルで指定しようね。
検証してみた
先ほどご紹介したブログと同様に、ウィザードを使用して設定ファイル(Config.json)を作成します。
今回は"retention_in_days": 7
で設定してみました。(下記は設定ファイル内の"logs"のみ抜粋しています。)
{ "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/messages", "log_group_name": "messages", "log_stream_name": "{instance_id}", "retention_in_days": 7 } ] } } }
設定ファイルを読み込み、エージェントを起動させます。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s sudo systemctl restart amazon-cloudwatch-agent.service
CloudWatchコンソールを見てみましょう。
保持が7日間(1週間)に設定されてますね。
ここでコンソールから変更を行いたいと思います。アクション
で保持設定を編集
を押下します。
失効しない
を選択し、保存
を押下します。
保持が失効しない
に変更されました。
ここでCloudWatchエージェントを再起動させます。
sudo systemctl restart amazon-cloudwatch-agent.service
保持が7日間(1週間)に戻ってしまいました。
疑問:CloudWatchエージェントは自動で再起動されるの?
EC2インスタンス起動中では、再起動を意図して実行しない限りエージェントは自動で再起動されません。
ただし以下の場合はエージェントが再起動されてしまいます。
- EC2インスタンスを再起動させる
- EC2インスタンスを停止→開始させる
またログ設定を変更し、エージェントを意図的に再起動する場合も出てくると思います。
そのためCloudWatchLogsの保持期間は設定ファイルで指定するのが良いでしょう。
最後に
今回はこちらのJAWSUG朝会で頂いた質問を元に検証しました。
質問ありがとうございました!
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!